<template>
    <view :class="theme_view">
        <view :class="(plugins_mourning_data_is_app ? ' grayscale' : '') + (is_single_page == 1 ? ' single-page-top' : '')">
            <!-- 顶部内容、如果没有轮播和导航则使用矮的浮动导航背景样式，则使用高的背景样式 -->
            <view v-if="load_status == 1" class="home-top-nav-content pr" :style="((banner_list.length > 0 || navigation.length > 0) ? top_content_bg_color : top_content_search_bg_color) + top_content_style">
                <!-- 顶部背景图片 -->
                <view class="pa top-0 left-0 right-0">
                    <image class="bg-img wh-auto" mode="widthFix" :src="static_url + 'nav-top.png'"></image>
                </view>

                <!-- 搜索 -->
                <view v-if="common_app_is_header_nav_fixed == 1" :class="'search-fixed-seat '+(common_app_is_enable_search == 1 ? 'nav-enable-search' : '')"></view>
                <view :class="'pr ' + (common_app_is_header_nav_fixed == 1 ? 'search-content-fixed' : '')" :style="common_app_is_header_nav_fixed == 1 ? top_content_search_bg_color : ''">
                    <view :class="'search-content-fixed-content '+(common_app_is_enable_search == 1 ? 'nav-enable-search' : '')" :style="(common_app_is_header_nav_fixed == 1 ? top_content_style : '') + (common_app_is_header_nav_fixed == 1 ? top_content_search_content_style : '')">
                        <view class="home-top-nav margin-bottom-sm pr padding-right-main">
                            <!-- 定位 -->
                            <view v-if="is_home_location_choice == 1" class="home-top-nav-location dis-inline-block va-m single-text cr-white pr bs-bb padding-left-main padding-right-lg" @tap="choose_user_location_event">
                                <view class="dis-inline-block va-m lh">
                                    <iconfont name="icon-location" size="32rpx" propClass="lh" color="#fff"></iconfont>
                                </view>
                                <text class="va-m margin-left-xs text-size-md">{{user_location.text || ''}}</text>
                                <view class="lh pa right-0 top-xxxl">
                                    <iconfont name="icon-arrow-bottom" size="24rpx" propClass="lh-xs" color="#fff"></iconfont>
                                </view>
                            </view>
                            <block v-else>
                                <!-- logo/标题 -->
                               <!-- <view class="home-top-nav-logo dis-inline-block va-m padding-left-main">
                                    <block v-if="is_home_logo_use_text == 0 && (application_logo || null) != null">
                                        <image :src="application_logo" mode="heightFix" class="home-top-nav-logo-image"></image>
                                    </block>
                                    <block v-else>
                                        <view v-if="(application_title || null) != null" class="home-top-nav-logo-title cr-white single-text">{{ application_title }}</view>
                                    </block>
                                </view> -->
                            </block>
                            <!-- #ifdef H5 || APP -->
                            <!-- 右上角icon列表 -->
                            <view v-if="(right_icon_list || null) != null && right_icon_list.length > 0" class="nav-top-right-icon fr">
                                <block v-for="(item, index) in right_icon_list">
                                    <view class="item dis-inline-block cp pr" :data-value="item.url || ''" @tap="url_event">
                                        <iconfont :name="item.icon" size="38rpx" color="#fff"></iconfont>
                                        <view v-if="(item.badge || null) != null" class="badge-icon pa">
                                            <component-badge :propNumber="item.badge"></component-badge>
                                        </view>
                                    </view>
                                </block>
                            </view>
                            <!-- #endif -->
                        </view>
                        <view v-if="common_app_is_enable_search == 1" class="search-content-input padding-horizontal-main">
                            <!-- 是否开启搜索框前面icon扫一扫 -->
                            <block v-if="is_home_search_scan == 1">
                                <component-search :propIsBtn="true" propSize="sm" :propPlaceholder="$t('customview.customview.726k7y')" propPlaceholderClass="cr-grey-c" propIconColor="#999" propBgColor="#fff"
                                    <!-- #ifndef H5 -->
                                    @onicon="search_icon_event" propIcon="icon-scan" :propIsIconOnEvent="true"
                                    <!-- #endif -->
                                ></component-search>
                            </block>
                            <block v-else>
                                <component-search :propIsBtn="true" propSize="sm" :propPlaceholder="$t('customview.customview.726k7y')" propPlaceholderClass="cr-grey-c" propIconColor="#999" propBgColor="#fff"></component-search>
                            </block>
                        </view>
                    </view>
                </view>

                <!-- 轮播 -->
                <view class="banner-content padding-horizontal-main" v-if="banner_list.length > 0">
                    <component-banner :propData="banner_list" @changeBanner="change_banner"></component-banner>
                </view>
                <!-- 导航 -->
              <!--  <view v-if="navigation.length > 0" class="spacing-mt" :class="load_status == 1 && (common_shop_notice || null) != null ? '' : ' spacing-mb'">
                    <view class="padding-horizontal-main">
                        <view class="bg-white border-radius-main">
                            <component-icon-nav :propData="{...{data: navigation}, ...{random: random_value}}"></component-icon-nav>
                        </view>
                    </view>
                </view> -->
            </view>

            <!-- 内容 -->
            <view class="content padding-horizontal-main pr">
                <!-- 商城公告 -->
                <view v-if="load_status == 1 && (common_shop_notice || null) != null" class="notice">
                    <uni-notice-bar show-icon scrollable :text="common_shop_notice" background-color="transparent" color="#666" />
                </view>
                <!-- 推荐文章 -->
                <view v-if="article_list.length > 0" class="article-list padding-main border-radius-main oh bg-white spacing-mb">
                    <view mode="aspectFit" class="new-icon va-m fl cp pr divider-r" data-value="/pages/article-category/article-category" @tap="url_event"> <text>{{$t('index.index.t8bll8')}}</text><text class="cr-red">{{$t('index.index.t8bll9')}}</text> </view>
                    <view class="right-content fr va-m">
                        <swiper :vertical="true" :autoplay="true" :circular="true" display-multiple-items="1" interval="3000">
                            <block v-for="(item, index) in article_list" :key="index">
                                <swiper-item class="single-text">
                                    <text class="cr-base text-size-sm cp" :data-value="item.category_url" @tap="url_event">[{{ item.article_category_name }}]</text>
                                    <text class="cr-base text-size-sm margin-left-xs cp" :style="(item.title_color || null) != null ? 'color:' + item.title_color + ' !important;' : ''" :data-value="item.url" @tap="url_event">{{ item.title }}</text>
                                </swiper-item>
                            </block>
                        </swiper>
                    </view>
                </view>

                <!-- 按照插件顺序渲染插件数据 -->
                <block v-if="plugins_sort_list.length > 0">
                    <block v-for="(pv, pi) in plugins_sort_list" :key="pi">
                        <!-- 首页中间广告 - 插件 -->
                        <view v-if="pv.plugins == 'homemiddleadv' && (plugins_homemiddleadv_data || null) != null && plugins_homemiddleadv_data.length > 0" class="plugins-homemiddleadv oh spacing-mb">
                            <view v-for="(item, index) in plugins_homemiddleadv_data" :key="index" class="item border-radius-main oh cp" :data-value="item.url || ''" @tap="url_event">
                                <image class="dis-block wh-auto border-radius-main" :src="item.images" mode="widthFix"> </image>
                            </view>
                        </view>

                        <!-- 限时秒杀 - 插件 -->
                        <view v-if="pv.plugins == 'seckill' && (plugins_seckill_data || null) != null && (plugins_seckill_data.data || null) != null && (plugins_seckill_data.data.goods || null) != null && plugins_seckill_data.data.goods.length > 0" class="plugins-seckill-data border-radius-main spacing-mb bg-white" :style="'background-image: url(' + seckill_static_url + 'seckill-bg.png);'">
                            <view class="flex-row jc-sb align-c padding-top-main padding-horizontal-main">
                                <view class="flex-1">
                                    <image class="dis-inline-block va-m icon" :src="plugins_seckill_data.data.home_title_icon" mode="widthFix"></image>
                                    <view class="dis-inline-block va-m margin-left-sm">
                                        <component-countdown :propHour="plugins_seckill_data.data.time.hours" :propMinute="plugins_seckill_data.data.time.minutes" :propSecond="plugins_seckill_data.data.time.seconds"></component-countdown>
                                    </view>
                                </view>
                                <text data-value="/pages/plugins/seckill/index/index" @tap="url_event" class="arrow-right padding-right cr-grey text-size-xs cp">{{$t('common.more')}}</text>
                            </view>
                            <component-goods-list :propData="{ style_type: 2, goods_list: plugins_seckill_data.data.goods }" :propLabel="plugins_label_data" :propCurrencySymbol="currency_symbol" :propIsCartParaCurve="true" propSource="index" :propOpenCart="false"></component-goods-list>
                        </view>

                        <!-- 活动配置-楼层顶部 - 插件 -->
                        <view v-if="pv.plugins == 'activity' && (plugins_activity_data || null) != null">
                            <component-activity-list :propConfig="plugins_activity_data.base" :propData="plugins_activity_data.data" propLocation="0" :propLabel="plugins_label_data" :propCurrencySymbol="currency_symbol" :propIsCartParaCurve="true" propSource="index"></component-activity-list>
                        </view>

                        <!-- 门店 - 插件 -->
                        <view v-if="pv.plugins == 'realstore' && (plugins_realstore_data || null) != null">
                            <view v-if="(plugins_realstore_data.base.home_data_list_title || null) != null" class="spacing-nav-title flex-row align-c jc-sb text-size-xs">
                                <text class="text-wrapper title-left-border single-text flex-1 flex-width padding-right-main">{{ plugins_realstore_data.base.home_data_list_title }}</text>
                                <text data-value="/pages/plugins/realstore/search/search" @tap="url_event" class="arrow-right padding-right cr-grey cp">{{$t('common.more')}}</text>
                            </view>
                            <component-realstore-list :propData="{...{data: plugins_realstore_data.data}, ...{random: random_value}}"></component-realstore-list>
                        </view>

                        <!-- 多商户 - 插件 -->
                        <view v-if="pv.plugins == 'shop' && (plugins_shop_data || null) != null">
                            <view v-if="(plugins_shop_data.base.home_data_list_title || null) != null" class="spacing-nav-title flex-row align-c jc-sb text-size-xs">
                                <text class="text-wrapper title-left-border single-text flex-1 flex-width padding-right-main">{{ plugins_shop_data.base.home_data_list_title }}</text>
                                <text data-value="/pages/plugins/shop/index/index" @tap="url_event" class="arrow-right padding-right cr-grey cp">{{$t('common.more')}}</text>
                            </view>
                            <component-shop-list :propConfig="plugins_shop_data.base" :propData="{...{data: plugins_shop_data.data}, ...{random: random_value}}"></component-shop-list>
                        </view>

                        <!-- 组合搭配 - 插件 -->
                        <view v-if="pv.plugins == 'binding' && (plugins_binding_data || null) != null">
                            <view v-if="(plugins_binding_data.base.home_data_list_title || null) != null" class="spacing-nav-title flex-row align-c jc-sb text-size-xs">
                                <text class="text-wrapper title-left-border single-text flex-1 flex-width padding-right-main">{{ plugins_binding_data.base.home_data_list_title }}</text>
                                <text data-value="/pages/plugins/binding/index/index" @tap="url_event" class="arrow-right padding-right cr-grey cp">{{$t('common.more')}}</text>
                            </view>
                            <component-binding-list :propConfig="plugins_binding_data.base" :propData="{...{data: plugins_binding_data.data}, ...{random: random_value}}" :propCurrencySymbol="currency_symbol"></component-binding-list>
                        </view>

                        <!-- 博客-楼层顶部 - 插件 -->
                        <view v-if="pv.plugins == 'blog' && (plugins_blog_data || null) != null">
                            <component-blog-list :propConfig="plugins_blog_data.base" :propData="plugins_blog_data.data" propLocation="0"></component-blog-list>
                        </view>

                        <!-- 魔方 - 插件 -->
                        <view v-if="pv.plugins == 'magic' && (plugins_magic_data || null) != null">
                            <component-magic-list :propData="{...plugins_magic_data, ...{random: random_value}}" :propCurrencySymbol="currency_symbol" :propLabel="plugins_label_data"></component-magic-list>
                        </view>
                    </block>
                </block>

                <!-- 楼层数据 -->
                <block v-if="(data_list || null) != null && data_list.length > 0">
                    <!-- 数据模式0,1自动+手动、2拖拽 -->
                    <block v-if="home_index_floor_data_type == 2">
                        <!-- 引入拖拽数据模块 -->
                        <component-layout :propData="data_list"></component-layout>
                    </block>
                    <block v-else>
                        <!-- 自动+手动 -->
                        <view v-for="(floor, index) in data_list" :key="index" class="floor">
                            <view class="spacing-nav-title flex-row align-c jc-sb text-size-xs">
                                <view class="title-left">
                                    <text class="text-wrapper title-left-border" :style="'color:' + (floor.bg_color || '#333') + ';'">{{ floor.name }}</text>
                                    <text v-if="(floor.describe || null) != null" class="vice-name margin-left-lg cr-grey">{{ floor.describe }}</text>
                                </view>
                                <text :data-value="'/pages/goods-search/goods-search?category_id=' + floor.id" @tap="url_event" class="arrow-right padding-right cr-grey cp">{{$t('common.more')}}</text>
                            </view>
                            <view class="floor-list wh-auto oh pr">
                                <block v-if="(floor.goods || null) != null && floor.goods.length > 0">
                                    <component-goods-list :propData="{ style_type: 1, goods_list: floor.goods }" :propLabel="plugins_label_data" :propCurrencySymbol="currency_symbol" :propIsCartParaCurve="true" propSource="index"></component-goods-list>
                                </block>
                            </view>
                        </view>
                    </block>
                </block>

                <!-- 按照插件顺序渲染插件数据 -->
                <block v-if="plugins_sort_list.length > 0">
                    <block v-for="(pv, pi) in plugins_sort_list" :key="pi">
                        <!-- 活动配置-楼层底部 - 插件 -->
                        <view v-if="pv.plugins == 'activity' && (plugins_activity_data || null) != null">
                            <component-activity-list :propConfig="plugins_activity_data.base" :propData="plugins_activity_data.data" propLocation="1" :propLabel="plugins_label_data" :propCurrencySymbol="currency_symbol" propSource="index" :propOpenCart="false"></component-activity-list>
                        </view>

                        <!-- 博客-楼层底部 - 插件 -->
                        <view v-if="pv.plugins == 'blog' && (plugins_blog_data || null) != null">
                            <component-blog-list :propConfig="plugins_blog_data.base" :propData="plugins_blog_data.data" propLocation="1"></component-blog-list>
                        </view>

                        <!--- 底部购买记录 - 插件 -->
                        <view v-if="pv.plugins == 'salerecords' && (plugins_salerecords_data || null) != null && (plugins_salerecords_data.data || null) != null && plugins_salerecords_data.data.length > 0" class="plugins-salerecords bg-white border-radius-main padding-main spacing-mb">
                            <view class="spacing-nav-title flex-row align-c jc-sb text-size-xs">
                                <view class="title-left">
                                    <text class="text-wrapper">{{ plugins_salerecords_data.base.home_bottom_title || $t('index.index.s5r784') }}</text>
                                    <text v-if="(plugins_salerecords_data.base || null) != null && (plugins_salerecords_data.base.home_bottom_desc || null) != null" class="vice-name margin-left-sm cr-grey-9">{{ plugins_salerecords_data.base.home_bottom_desc }}</text>
                                </view>
                            </view>
                            <view class="oh">
                                <swiper :vertical="true" :autoplay="true" :circular="true" :display-multiple-items="plugins_salerecords_data.data.length < 6 ? plugins_salerecords_data.data.length : 6" interval="3000" :style="plugins_salerecords_data.data.length < 6 ? 'height:' + plugins_salerecords_data.data.length * 84.33 + 'rpx;' : ''">
                                    <block v-for="(item, index) in plugins_salerecords_data.data" :key="index">
                                        <swiper-item>
                                            <view class="item oh padding-vertical-main">
                                                <view class="item-content single-text fl">
                                                    <image mode="widthFix" :src="item.user.avatar" class="va-m br"> </image>
                                                    <text class="margin-left-sm">{{ item.user.user_name_view }}</text>
                                                    <text v-if="(item.user.province || null) != null"><text class="padding-left-xs padding-right-xs">-</text>{{ item.user.province }}</text>
                                                </view>
                                                <view class="item-content fl">
                                                    <view :data-value="item.goods_url" @tap="url_event" class="cp single-text">
                                                        <image mode="widthFix" :src="item.images" class="va-m br"> </image>
                                                        <text class="margin-left-sm single-text">{{ item.title }}</text>
                                                    </view>
                                                </view>
                                                <view class="item-content single-text fr tr cr-grey padding-top-xs">
                                                    {{ item.add_time }}
                                                </view>
                                            </view>
                                        </swiper-item>
                                    </block>
                                </swiper>
                            </view>
                        </view>
                    </block>
                </block>

                <!-- 弹屏广告 - 插件 -->
                <view v-if="(plugins_popupscreen_data || null) != null && plugins_popupscreen_status == 1" class="plugins-popupscreen wh-auto ht-auto">
                    <view class="content pr">
                        <view class="close pa cp round padding-sm tc" @tap.stop="plugins_popupscreen_close_event">
                            <iconfont name="icon-close-o" size="28rpx" color="#cacaca"></iconfont>
                        </view>
                        <image class="dis-block auto" :src="plugins_popupscreen_data.images" mode="widthFix" :data-value="plugins_popupscreen_data.images_url || ''" @tap="url_event"></image>
                    </view>
                </view>
            </view>

            <!-- 提示信息 -->
            <block v-if="load_status == 0">
                <component-no-data :propStatus="data_list_loding_status" :propMsg="data_list_loding_msg" propPage="home" :propIsHeader="true"></component-no-data>
            </block>

            <!-- 结尾 -->
            <component-bottom-line :propStatus="data_bottom_line_status"></component-bottom-line>

            <!-- 版权信息 -->
            <view v-if="load_status == 1">
                <component-copyright></component-copyright>
            </view>
        </view>

        <block v-if="load_status == 1">
            <!-- 在线客服 -->
            <component-online-service :propIsNav="true" :propIsBar="true" :propIsGrayscale="plugins_mourning_data_is_app"></component-online-service>

            <!-- 快捷导航 -->
            <component-quick-nav :propIsNav="true" :propIsBar="true" :propIsGrayscale="plugins_mourning_data_is_app"></component-quick-nav>

            <!-- 用户基础 -->
            <component-user-base ref="user_base" :propIsGrayscale="plugins_mourning_data_is_app"></component-user-base>

            <!-- app管理 -->
            <component-app-admin ref="app_admin"></component-app-admin>
        </block>
    </view>
</template>

<script>
    const app = getApp();
    import componentSearch from '@/components/search/search';
    import componentQuickNav from '@/components/quick-nav/quick-nav';
    import componentIconNav from '@/components/icon-nav/icon-nav';
    import componentBanner from '@/components/slider/slider';
    import componentCountdown from '@/components/countdown/countdown';
    import componentLayout from '@/components/layout/layout';
    import componentBadge from '@/components/badge/badge';
    import componentNoData from '@/components/no-data/no-data';
    import componentBottomLine from '@/components/bottom-line/bottom-line';
    import componentCopyright from '@/components/copyright/copyright';
    import componentOnlineService from '@/components/online-service/online-service';
    import componentActivityList from '@/components/activity-list/activity-list';
    import componentBlogList from '@/components/blog-list/blog-list';
    import componentRealstoreList from '@/components/realstore-list/realstore-list';
    import componentShopList from '@/components/shop-list/shop-list';
    import componentGoodsList from '@/components/goods-list/goods-list';
    import componentUserBase from '@/components/user-base/user-base';
    import componentBindingList from '@/components/binding-list/binding-list';
    import componentMagicList from '@/components/magic-list/magic-list';
    import componentAppAdmin from '@/components/app-admin/app-admin';

    // 状态栏高度
    var bar_height = parseInt(app.globalData.get_system_info('statusBarHeight', 0, true));
    // #ifdef MP-TOUTIAO
    bar_height = 0;
    // #endif
    export default {
        data() {
            return {
                theme_view: '',
                theme_color: '',
                common_static_url: '',
                seckill_static_url: '',
                static_url: '',
                data_list_loding_status: 1,
                data_list_loding_msg: '',
                data_bottom_line_status: false,
                load_status: 0,
                currency_symbol: app.globalData.currency_symbol(),
                is_home_search_scan: app.globalData.data.is_home_search_scan,
                data_list: [],
                banner_list: [],
                navigation: [],
                article_list: [],
                cart_total: 0,
                message_total: 0,
                right_icon_list: [],
                // 增加随机数，避免无法监听数据列表内部数据更新
                random_value: 0,
                // 基础配置
                common_shop_notice: null,
                home_index_floor_data_type: 0,
                common_app_is_enable_search: 0,
                common_app_is_header_nav_fixed: 0,
                common_app_is_online_service: 0,
                // 顶部导航、名称、logo、定位
                application_title: app.globalData.data.application_title,
                application_logo: app.globalData.data.application_logo,
                is_home_logo_use_text: app.globalData.data.is_home_logo_use_text,
                is_home_location_choice: app.globalData.data.is_home_location_choice,
                // 顶部+搜索样式配置
                top_content_bg_color: '',
                top_content_search_bg_color: '',
                top_content_search_content_style: '',
                // #ifdef MP
                top_content_style: 'padding-top:' + (bar_height + 6) + 'px;',
                // #endif
                // #ifdef H5 || MP-TOUTIAO
                top_content_style: 'padding-top:' + (bar_height + 10) + 'px;',
                // #endif
                // #ifdef APP
                top_content_style: 'padding-top:' + (bar_height) + 'px;',
                // #endif
                // 是否单页预览
                is_single_page: app.globalData.is_current_single_page() || 0,
                // 用户位置信息
                user_location: {},
                // 轮播滚动时，背景色替换
                slider_bg: null,
                // 插件顺序列表
                plugins_sort_list: [],
                // 限时秒杀插件
                plugins_seckill_data: null,
                // 购买记录插件
                plugins_salerecords_data: null,
                // 活动配置插件
                plugins_activity_data: null,
                // 标签插件
                plugins_label_data: null,
                // 首页中间广告插件
                plugins_homemiddleadv_data: null,
                // 弹屏广告、这里设置一天后可以再次显示
                plugins_popupscreen_data: null,
                plugins_popupscreen_status: 0,
                plugins_popupscreen_cache_key: 'plugins_popupscreen_cache_key',
                plugins_popupscreen_timer: null,
                // 哀悼灰度插件
                plugins_mourning_data_is_app: app.globalData.is_app_mourning(),
                // 标签插件
                plugins_blog_data: null,
                // 门店插件
                plugins_realstore_data: null,
                // 多商户插件
                plugins_shop_data: null,
                // 组合搭配插件
                plugins_binding_data: null,
                // 魔方插件
                plugins_magic_data: null,
            };
        },

        components: {
            componentSearch,
            componentQuickNav,
            componentIconNav,
            componentBanner,
            componentCountdown,
            componentLayout,
            componentBadge,
            componentNoData,
            componentBottomLine,
            componentCopyright,
            componentOnlineService,
            componentActivityList,
            componentBlogList,
            componentRealstoreList,
            componentShopList,
            componentGoodsList,
            componentUserBase,
            componentBindingList,
            componentMagicList,
            componentAppAdmin
        },
        props: {},

        onLoad(params) {
            // 调用公共事件方法
            app.globalData.page_event_onload_handle(params);
        },

        onShow() {
            // 调用公共事件方法
            app.globalData.page_event_onshow_handle();

            // 加载数据
            if(this.is_home_location_choice == 1) {
                // 用户位置初始化
                this.user_location_init();
                // 先解绑自定义事件
                uni.$off('refresh');
                // 监听自定义事件并进行页面刷新操作
                uni.$on('refresh', (data) => {
                    // 初始位置数据
                    if((data.location_success || false) == true) {
                        // 用户位置初始化
                        this.user_location_init();
                        // 重新请求数据
                        // #ifdef APP
                        this.init();
                        // #endif
                    }
                });
            }

            // 数据加载
            this.init();

            // 初始化配置
            this.init_config();

            // app管理
            if ((this.$refs.app_admin || null) != null) {
                this.$refs.app_admin.init();
            }

            // 用户头像和昵称设置提示
            if ((this.$refs.user_base || null) != null) {
                this.$refs.user_base.init('index');
            }
        },

        // 下拉刷新
        onPullDownRefresh() {
            if(this.data_list_loding_status === 1) {
                uni.stopPullDownRefresh();
            } else {
                this.init();
            }
        },

        methods: {
            // 初始化配置
            init_config(status) {
                if ((status || false) == true) {
                    this.setData({
                        currency_symbol: app.globalData.get_config('currency_symbol'),
                        common_shop_notice: app.globalData.get_config('config.common_shop_notice'),
                        home_index_floor_data_type: app.globalData.get_config('config.home_index_floor_data_type'),
                        common_app_is_enable_search: app.globalData.get_config('config.common_app_is_enable_search'),
                        common_app_is_header_nav_fixed: app.globalData.get_config('config.common_app_is_header_nav_fixed'),
                        common_app_is_online_service: app.globalData.get_config('config.common_app_is_online_service'),
                        application_title: app.globalData.get_application_title(),
                        application_logo: app.globalData.get_application_logo(),
                    });
                } else {
                    app.globalData.is_config(this, 'init_config');
                }
            },

            // 获取数据
            init(params = {}) {
                // 还没有数据则读取缓存
                var cache_key = app.globalData.data.cache_index_data_key;
                if(this.load_status == 0)
                {
                    // 本地缓存数据
                    var upd_data = uni.getStorageSync(cache_key) || null;
                    if(upd_data != null) {
                        // 先使用缓存数据展示
                        this.setData(upd_data);

                        // 初始化返回公共处理
                        this.init_result_common_handle();

                        // 已有本地缓存则直接取远程有效数据（默认首次取的是远程缓存数据）
                        params['is_cache'] = 0;
                    }
                }

                // 网络检查
                if((params || null) == null || (params.loading || 0) == 0) {
                    app.globalData.network_type_handle(this, 'init', params);
                    return false;
                }

                // 没有缓存数据则开启加载层
                if(upd_data == null) {
                    this.setData({
                        data_list_loding_status: 1,
                    });
                }
                // 请求远程数据
                uni.request({
                    url: app.globalData.get_request_url('index', 'index'),
                    method: 'POST',
                    data: params,
                    dataType: 'json',
                    success: (res) => {
                        uni.stopPullDownRefresh();
                        // 数据处理
                        var data = res.data.data;
                        if (res.data.code == 0) {
                            var upd_data = {
                                random_value: Math.random(),
                                data_bottom_line_status: true,
                                banner_list: data.banner_list || [],
                                navigation: data.navigation || [],
                                article_list: data.article_list || [],
                                data_list: data.data_list,
                                cart_total: data.cart_total.buy_number || 0,
                                message_total: parseInt(data.message_total || 0),
                                right_icon_list: data.right_icon_list || [],
                                data_list_loding_status: data.data_list.length == 0 ? 0 : 3,
                                plugins_sort_list: data.plugins_sort_list || [],
                                plugins_seckill_data: data.plugins_seckill_data || null,
                                plugins_salerecords_data: (data.plugins_salerecords_data || null) == null || data.plugins_salerecords_data.length <= 0 ? null : data.plugins_salerecords_data,
                                plugins_activity_data: (data.plugins_activity_data || null) == null || data.plugins_activity_data.length <= 0 ? null : data.plugins_activity_data,
                                plugins_label_data: (data.plugins_label_data || null) == null || (data.plugins_label_data.base || null) == null || (data.plugins_label_data.data || null) == null || data.plugins_label_data.data.length <= 0 ? null : data.plugins_label_data,
                                plugins_homemiddleadv_data: (data.plugins_homemiddleadv_data || null) == null || data.plugins_homemiddleadv_data.length <= 0 ? null : data.plugins_homemiddleadv_data,
                                plugins_popupscreen_data: data.plugins_popupscreen_data || null,
                                plugins_mourning_data_is_app: parseInt(data.plugins_mourning_data || 0) == 1,
                                plugins_blog_data: data.plugins_blog_data || null,
                                plugins_realstore_data: data.plugins_realstore_data || null,
                                plugins_shop_data: data.plugins_shop_data || null,
                                plugins_binding_data: data.plugins_binding_data || null,
                                plugins_magic_data: data.plugins_magic_data || null,
                            };
                            // 如果开启了哀悼灰色则不固定导航
                            if(upd_data.plugins_mourning_data_is_app == 1) {
                                upd_data['common_app_is_header_nav_fixed'] = 0;
                            }
                            this.setData(upd_data);

                            // 存储缓存
                            uni.setStorageSync(cache_key, upd_data);

                            // 弹屏广告插件处理
                            this.plugins_popupscreen_handle();

                            // 是否需要重新加载数据
                            if(parseInt(data.is_result_data_cache || 0) == 1) {
                                this.init({is_cache: 0});
                            } else {
                                // 导航购物车处理、缓存数据则不更新导航角标
                                if (this.cart_total <= 0) {
                                    app.globalData.set_tab_bar_badge(2, 0);
                                } else {
                                    app.globalData.set_tab_bar_badge(2, 1, this.cart_total);
                                }
                            }
                        } else {
                            this.setData({
                                data_list_loding_status: 0,
                                data_list_loding_msg: res.data.msg,
                                data_bottom_line_status: true,
                            });
                        }

                        // 初始化返回公共处理
                        this.init_result_common_handle();
                    },
                    fail: () => {
                        // 轮播数据处理
                        if (this.load_status == 0 || (this.top_content_search_bg_color || null) == null) {
                            this.change_banner(app.globalData.get_theme_color());
                        }

                        uni.stopPullDownRefresh();
                        this.setData({
                            data_list_loding_status: 2,
                            data_list_loding_msg: this.$t('common.internet_error_tips'),
                            data_bottom_line_status: true,
                            load_status: 1,
                        });
                    },
                });
            },

            // 初始化返回公共处理
            init_result_common_handle() {
                var theme_view = app.globalData.get_theme_value_view();
                var theme_color = app.globalData.get_theme_color();
                var common_static_url = app.globalData.get_static_url('common');
                var seckill_static_url = app.globalData.get_static_url('seckill', true) + 'app/';
                var static_url = app.globalData.get_static_url('home');

                // 轮播数据处理
                if (this.load_status == 0 || (this.top_content_search_bg_color || null) == null) {
                    var color = (this.banner_list && this.banner_list.length > 0 && (this.banner_list[0]['bg_color'] || null) != null) ? this.banner_list[0]['bg_color'] : theme_color;
                    this.change_banner(color);
                }

                // 公共数据
                this.setData({
                    top_content_search_content_style: 'background-image: url("' + static_url + 'nav-top.png");',
                    theme_view: theme_view,
                    theme_color: theme_color,
                    common_static_url: common_static_url,
                    seckill_static_url: seckill_static_url,
                    static_url: static_url,
                    load_status: 1,
                });

                // 分享菜单处理、延时执行，确保基础数据已加载完成
                setTimeout(function () {
                    app.globalData.page_share_handle();
                }, 3000);
            },

            // 选择用户地理位置
            choose_user_location_event(e) {
                app.globalData.choose_user_location_event();
            },

            // 用户地理位置初始化
            user_location_init() {
                this.setData({
                    user_location: app.globalData.choice_user_location_init()
                });
            },

            // url事件
            url_event(e) {
                app.globalData.url_event(e);
            },

            // 弹屏广告插件处理
            plugins_popupscreen_handle() {
                if (this.plugins_popupscreen_data != null) {
                    // 不存在关闭缓存或者超过间隔时间则显示
                    var cv = parseInt(uni.getStorageSync(this.plugins_popupscreen_cache_key)) || 0;
                    var pv = parseInt(this.plugins_popupscreen_data.interval_time) || 86400;
                    if (cv == 0 || cv + pv < app.globalData.get_timestamp()) {
                        // 是否开启自动关闭
                        var timer = null;
                        var ct = parseInt(this.plugins_popupscreen_data.close_time) || 0;
                        if (ct > 0) {
                            var self = this;
                            timer = setTimeout(function () {
                                self.setData({
                                    plugins_popupscreen_status: 0,
                                });
                                uni.setStorage({
                                    key: self.plugins_popupscreen_cache_key,
                                    data: app.globalData.get_timestamp(),
                                });
                            }, ct * 1000);
                        }
                        this.setData({
                            plugins_popupscreen_status: 1,
                            plugins_popupscreen_timer: timer,
                        });
                    }
                }
            },

            // 弹屏广告 - 插件 关闭事件
            plugins_popupscreen_close_event(e) {
                this.setData({
                    plugins_popupscreen_status: 0,
                });
                uni.setStorage({
                    key: this.plugins_popupscreen_cache_key,
                    data: app.globalData.get_timestamp(),
                });
                clearInterval(this.plugins_popupscreen_timer);
            },

            // 轮播改变、背景色处理
            change_banner(color) {
                if ((color || null) == null) {
                    color = this.theme_color;
                }
                this.setData({
                    top_content_bg_color: 'background: linear-gradient(180deg, ' + color + ' 0%, #f5f5f5 80%);',
                    top_content_search_bg_color: 'background: linear-gradient(180deg, ' + color + ' 0%, #f5f5f5 300%);',
                });
            },

            // 搜索icon扫码事件
            search_icon_event(e) {
                app.globalData.scan_handle();
            },
        },
    };
</script>
<style>
    @import './index.css';
</style>